package com.ruoyi.trans.domain.req;


import java.util.List;

/**
 * 主订单信息请求模型
 */
public class OrderInfoReq {

    /**
     * 订单创建时间 格式为2019-08-01 13:00:00
     * yyyy-MM-dd HH:mm:ss
     * 只支持30日内的订单信息同步
     */
    private String orderCreateTime;

    /**
     * 有首付款情况下必填
     * 订单支付时间 格式为2019-08-01 13:00:00
     * yyyy-MM-dd HH:mm:ss
     */
    private String orderPayTime;

    /**
     * 订单付款主题，长度小于150
     */
    private String orderPaySubject;

    /**
     * 订单付款内容描述，长度小于500
     */
    private String orderPayBody;

    /**
     * 总租期，单位为rentUnit
     * 大于0，小于等于60
     */
    private Integer rentTerm;

    /**
     * 租期单位 默认为“MONTH”，枚举：
     * MONTH : 月
     * DAY : 天
     */
    private String rentUnit;

    /**
     * dueMode=1必填
     * bizType=INSTALLMENT， 该字段默认为0
     * 到期买断价 精确到分，即1234表示12.34元，
     * 到期金额，若为买断形式传买断金额，否则传到期归还金额
     * 大于0
     */
    private Long buyOutPrice;

    /**
     * bizType=INSTALLMENT下非必填
     * 承租人收货地址
     * 长度小于100
     */
    private String userAddress;

    /**
     * bizType=INSTALLMENT， 该字段默认为0
     * 到期形式
     * 1: 到期买断/归还（选择此模式，buyoutPrice不为空，作为用户到期未归还的买断金填入）
     * 2: 租满即送（此时买断价可以为空）
     * 3: 续租
     */
    private Integer dueMode;

    /**
     * dueMode=3 续租模式下，前序订单号填入，其他情况将会报错
     * 长度小于64
     */
    private String previousOrderId;

    /**
     * 租金总额,精确到分，即1234表示12.34元
     * 大于0
     */
    private Long totalRentMoney;

    /**
     * 如果使用首付款功能就填写
     * 首付款金额, 精确到分，即1234表示12.34元
     * 大于等于0
     */
    private Long downPayment;

    /**
     * 其他额外字段，以json形式传递
     * {"authorizeUrl":"authorizeUrl"}
     * map最大个数为50，最大长度限制2000
     */
    private String extraInfo;

    /**
     * 融资链路使用
     * 融资的资方的社会信用代码列表
     * 列表最大长度为5
     * 注意，
     * 该字段有值、代表进入融资预审逻辑；没有值则订单资金是自持、不会进入融资逻辑
     * 当所有的融资预审都通过时， 数组排序靠前的资方会优先作为融资方被选择
     */
    private List<String> fundIdList;

    /**
     * 仅融资订单传入有效
     * 枚举定义如下：
     * F2B : 资方仅和商户签署，不参与对C签署
     * F2C : 资方参与对C签署
     * 如果本字段不传入，默认使用F2C模式
     */
    private String fundSignMode;

    /**
     * 用户是否静默签署，结合场景定向开放、默认不开放
     * null | false :不静默签署
     * true: 静默签署
     */
    private Boolean userAutoSign;

    /**
     * 物流方案，默认为POST。针对融资订单、该值必须为POST。枚举：
     * POST : 邮寄
     * OFFLINE : 线下自取， 无需物流接口校验
     */
    private String logisticType;

    /**
     * 免押金额， 单位为分
     * 大于等于0
     */
    private Long depositPrice;

    /**
     * 融资必填
     * 大于0，小于等于租期（rentTerm）
     * 商户分账起始期数
     */
    private Integer divideStartTermIndex;

    /**
     * 推广id
     */
    private String promotionId;

    public String getOrderCreateTime() {
        return orderCreateTime;
    }

    public void setOrderCreateTime(String orderCreateTime) {
        this.orderCreateTime = orderCreateTime;
    }

    public String getOrderPayTime() {
        return orderPayTime;
    }

    public void setOrderPayTime(String orderPayTime) {
        this.orderPayTime = orderPayTime;
    }

    public String getOrderPaySubject() {
        return orderPaySubject;
    }

    public void setOrderPaySubject(String orderPaySubject) {
        this.orderPaySubject = orderPaySubject;
    }

    public String getOrderPayBody() {
        return orderPayBody;
    }

    public void setOrderPayBody(String orderPayBody) {
        this.orderPayBody = orderPayBody;
    }

    public Integer getRentTerm() {
        return rentTerm;
    }

    public void setRentTerm(Integer rentTerm) {
        this.rentTerm = rentTerm;
    }

    public String getRentUnit() {
        return rentUnit;
    }

    public void setRentUnit(String rentUnit) {
        this.rentUnit = rentUnit;
    }

    public Long getBuyOutPrice() {
        return buyOutPrice;
    }

    public void setBuyOutPrice(Long buyOutPrice) {
        this.buyOutPrice = buyOutPrice;
    }

    public String getUserAddress() {
        return userAddress;
    }

    public void setUserAddress(String userAddress) {
        this.userAddress = userAddress;
    }

    public Integer getDueMode() {
        return dueMode;
    }

    public void setDueMode(Integer dueMode) {
        this.dueMode = dueMode;
    }

    public String getPreviousOrderId() {
        return previousOrderId;
    }

    public void setPreviousOrderId(String previousOrderId) {
        this.previousOrderId = previousOrderId;
    }

    public Long getTotalRentMoney() {
        return totalRentMoney;
    }

    public void setTotalRentMoney(Long totalRentMoney) {
        this.totalRentMoney = totalRentMoney;
    }

    public Long getDownPayment() {
        return downPayment;
    }

    public void setDownPayment(Long downPayment) {
        this.downPayment = downPayment;
    }

    public String getExtraInfo() {
        return extraInfo;
    }

    public void setExtraInfo(String extraInfo) {
        this.extraInfo = extraInfo;
    }

    public List<String> getFundIdList() {
        return fundIdList;
    }

    public void setFundIdList(List<String> fundIdList) {
        this.fundIdList = fundIdList;
    }

    public String getFundSignMode() {
        return fundSignMode;
    }

    public void setFundSignMode(String fundSignMode) {
        this.fundSignMode = fundSignMode;
    }

    public Boolean getUserAutoSign() {
        return userAutoSign;
    }

    public void setUserAutoSign(Boolean userAutoSign) {
        this.userAutoSign = userAutoSign;
    }

    public String getLogisticType() {
        return logisticType;
    }

    public void setLogisticType(String logisticType) {
        this.logisticType = logisticType;
    }

    public Long getDepositPrice() {
        return depositPrice;
    }

    public void setDepositPrice(Long depositPrice) {
        this.depositPrice = depositPrice;
    }

    public Integer getDivideStartTermIndex() {
        return divideStartTermIndex;
    }

    public void setDivideStartTermIndex(Integer divideStartTermIndex) {
        this.divideStartTermIndex = divideStartTermIndex;
    }

    public String getPromotionId() {
        return promotionId;
    }

    public void setPromotionId(String promotionId) {
        this.promotionId = promotionId;
    }
}

